/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.gov.cemaden.library.model.produto;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author alan
 */
@Entity
@Table(name = "prd_produtoitem", schema = "produto")
@SequenceGenerator(name = "sequence", sequenceName = "produto.prd_produtoitem", schema = "produto")
@NamedQueries({
    @NamedQuery(name = "ProdutoItem.findLastItemByProduto", 
            query = "SELECT i FROM ProdutoItem i WHERE datahoraItem = (SELECT MAX(datahoraItem) FROM ProdutoItem pi WHERE pi.produto = :produto) ORDER BY i.id DESC")
})
public class ProdutoItem {
    
    @Id
    @GeneratedValue
    @Column(name = "id_produtoitem", nullable = false, unique = true)
    private Long id;
    
    @Column(name = "datahora_cadastro")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datahoraCadastro;
    
    @Column(name = "datahora_item")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datahoraItem;
    
    @ManyToOne
    @JoinColumn(name = "id_produto")
    private Produto produto;

    /**
     * @return the id
     */
    public Long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return the datahoraCadastro
     */
    public Date getDatahoraCadastro() {
        return datahoraCadastro;
    }

    /**
     * @param datahoraCadastro the datahoraCadastro to set
     */
    public void setDatahoraCadastro(Date datahoraCadastro) {
        this.datahoraCadastro = datahoraCadastro;
    }

    /**
     * @return the datahoraItem
     */
    public Date getDatahoraItem() {
        return datahoraItem;
    }

    /**
     * @param datahoraItem the datahoraItem to set
     */
    public void setDatahoraItem(Date datahoraItem) {
        this.datahoraItem = datahoraItem;
    }

    /**
     * @return the produto
     */
    public Produto getProduto() {
        return produto;
    }

    /**
     * @param produto the produto to set
     */
    public void setProduto(Produto produto) {
        this.produto = produto;
    }
    
}
